home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-06 / tpnova.zip / IPXHDR.DOC < prev    next >
Text File  |  1990-09-21  |  7KB  |  197 lines

  1. unit IPXLib;
  2.  
  3. interface
  4.  
  5. uses DOS;
  6.  
  7. const
  8.    UNKNOWN_PACKET_TYPE              = 0;
  9.    ROUTING_INFORMATION_PACKET       = 1;
  10.    ECHO_PACKET                      = 2;
  11.    ERROR_PACKET                     = 3;
  12.    PACKET_EXCHANGE_PACKET           = 4;
  13.    SEQUENCED_PACKET_PROTOCOL_PACKET = 5;
  14.  
  15.    ANY_SERVER  = $FFFF;
  16.  
  17.  
  18. type
  19.    ServerID = array[1..48] of char;
  20.  
  21.    NetworkAddress = array[1..4] of byte;
  22.    NodeAddress    = array[1..6] of byte;
  23.    SocketAddress  = word;
  24.  
  25.    InternetworkAddress = RECORD
  26.          NetworkNumber      : NetworkAddress;
  27.          PhysicalNodeNumber : NodeAddress;
  28.          SocketNumber       : SocketAddress;
  29.       end;
  30.  
  31.    IPXHeaderType = RECORD
  32.          CheckSum         : word;
  33.          Length           : word;
  34.          TransportControl : byte;
  35.          PacketType       : byte;
  36.          Destination      : InternetworkAddress;
  37.          Source           : InternetworkAddress;
  38.       end;
  39.  
  40.    IPXPacketType = RECORD
  41.          Header  : IPXHeaderType;
  42.       end;
  43.  
  44.     SPXPacketType = RECORD
  45.          Header                  : IPXHeaderType;
  46.          ConnectionControl       : byte;
  47.          DataStreamType          : byte;
  48.          SourceConnectionID      : word;
  49.          DestinationConnectionID : word;
  50.          SequenceNumber          : word;
  51.          AcknowledgeNumber       : word;
  52.          AllocationNumber        : word;
  53.       end;
  54.  
  55.    ConnectionStatusBlock = RECORD
  56.          ConnectionState         : byte;
  57.          ConnectionFlags         : byte;
  58.          SourceConnectionID      : word;
  59.          DestinationConnectionID : word;
  60.          SequenceNumber          : word;
  61.          AcknowledgeNumber       : word;
  62.          AllocationNumber        : word;
  63.          RemoteAcknowledgeNumber : word;
  64.          RemoteAllocationNumber  : word;
  65.          ConnectionSocket        : word;
  66.          ImmeadiateAddress       : word;
  67.          Destination             : InternetworkAddress;
  68.          RetransmissionCount     : word;
  69.          EstimatedRoundtripDelay : word;
  70.          RetransmittedPackets    : word;
  71.          SuppressedPackets       : word;
  72.       end;
  73.  
  74.    SAPFunctionType = RECORD
  75.          case integer of
  76.             1 : (ResponseType         : word);
  77.             2 : (QueryType            : word);
  78.             3 : (AutoBroadcastType    : word);
  79.             4 : (ServerShutdownAdType : word);
  80.       end;
  81.  
  82.    SAPPacketType = RECORD
  83.          Header               : IPXHeaderType;
  84.          FunctionCode         : SAPFunctionType;
  85.          ServerType           : word;
  86.          ServerName           : ServerID;
  87.          ResidentNetwork      : InternetworkAddress;
  88.          IntermediateNetworks : word;
  89.       end;
  90.  
  91.    ServerIDInfo = RECORD
  92.          ServerType           : word;
  93.          ServerName           : ServerID;
  94.          ResidentNetwork      : InternetworkAddress;
  95.          IntermediateNetworks : word;
  96.       end;
  97.  
  98.    GSQPacketType = RECORD
  99.          Header               : IPXHeaderType;
  100.          FunctionCode         : SAPFunctionType;
  101.          ServerInfo           : array[1..8] of ServerIDInfo
  102.       end;
  103.  
  104.    PacketDescriptorType = RECORD
  105.          case integer of
  106.             1 : (IPXAddress : ^IPXPacketType;
  107.                  IPXSize    : integer);
  108.             2 : (SPXAddress : ^SPXPacketType;
  109.                  SPXSize    : integer);
  110.             3 : (SAPAddress : ^SAPPacketType;
  111.                  SAPSize    : integer);
  112.             4 : (GSQAddress : ^GSQPacketType;
  113.                  GSQSize    : integer);
  114.       end;
  115.  
  116.    DescriptorType = RECORD
  117.          Address : pointer;
  118.          Size    : integer;
  119.       end;
  120.  
  121.    AESECB = RECORD
  122.          Link               : pointer;
  123.          ESRAddress         : pointer;
  124.          InUse              : boolean;
  125.          AESWorkSpace       : array[1..5] of byte;
  126.       end;
  127.  
  128.    WorkSpaceArray = array[1..12] of byte;
  129.  
  130.    IPXECB = RECORD
  131.          Link               : pointer;
  132.          ESRAddress         : pointer;
  133.          InUse              : boolean;
  134.          CompletionCode     : byte;
  135.          SocketNumber       : word;
  136.          IPXWorkSpace       : longint;
  137.          DriverWorkSpace    : WorkSpaceArray;
  138.          ImmediateAddress   : NodeAddress;
  139.          FragmentCount      : integer;
  140.          PacketDescriptor   : PacketDescriptorType;
  141.          FragmentDescriptor : DescriptorType;
  142.          PascalESRAddress   : pointer;
  143.          UserDataAddress    : pointer;
  144.       end;
  145.  
  146. var
  147.    IPXResult           : integer;
  148. var
  149.    SPXInstalled        : boolean;
  150. var
  151.    SPXResult           : integer;
  152. var
  153.    SAPResult           : integer;
  154.    SAPSocket           : word;
  155.    SAPadECB            : ^IPXECB;
  156.    SAPadPacket         : ^SAPPacketType;
  157.    SAPWaitAddress,
  158.    SAPAdvertiseAddress : pointer;
  159. var
  160.    Regs                : Registers;
  161.  
  162.  
  163. (* IPX *********************************************************************)
  164.  
  165. procedure SetDataSegment;
  166. procedure PrepareIPXInterface;
  167. procedure OpenSocket(var SocketNumber : word);
  168. procedure CloseSocket(SocketNumber : word);
  169. procedure GetLocalTarget(var InterNetAddress; var LocalTargetAddress; var TransportTime : integer);
  170. procedure SendPacket(var AnECB);
  171. procedure ListenForPacket(var AnECB);
  172. procedure ScheduleIPXEvent(Delay : integer; var AnECB);
  173. procedure CancelEvent(var AnECB);
  174. procedure ScheduleSPecialEvent(Delay : integer; var AnECB);
  175. procedure GetIntervalMarker(var IntervalMarker : word);
  176. procedure GetInterNetworkAddress(var LocalNetworkAddress);
  177. procedure RelinquishControl;
  178. procedure DisconnectFromTarget(var ATargetAddress);
  179.  
  180.  
  181. (* SPX *********************************************************************)
  182.  
  183. procedure CheckSPXInstallation;
  184. procedure EstablishConnection(RetryCount : byte; MonitorConnection : boolean;
  185.                               var AnECB; var ConnectionID : word);
  186. procedure ListenForConnection(RetryCount : byte; MonitorConnection : boolean;
  187.                               var AnECB);
  188. procedure TerminateConnection(ConnectionNumber : word; var AnECB);
  189. procedure AbortConnection(ConnectionNumber : word);
  190. procedure GetConnectionStatus(ConnectionNumber : word; var AnECB; var Exists : boolean);
  191. procedure SendSequencedPacket(ConnectionNumber : word; var AnECB);
  192. procedure ListenForSequencedPacket(var AnECB);
  193. procedure ESRPortal;
  194. function ReverseWord(BackwardsWord : word) : word;
  195.  
  196. (***************************************************************************)
  197.